import java.util.Scanner;
import java.util.Stack;

public class Main {
    /**
     * 合并两个有序数组
     */
    public static void merge(int[] A,int[] B){
        int i=A.length-1;
        int j=B.length-1;
        int k= A.length+B.length-1;
        while (i>=0&&j>=0){
            if(A[i]>=B[j]){
                A[k]=A[i];
                k--;
                i--;
            }else {
                A[k]=B[j];
                j--;
                k--;
            }
        }
        if(j>0){
            while (j>=0){
                A[k]=B[j];
                j--;
                k--;
            }
        }
    }



    /**
     *
     * @param args
     */
    public static void main1(String[] args) {
        int[] array1=new int[6];
        int[] array2=new int[]{3,5,9};
        array1[0]=1;
        array1[1]=4;
        array1[2]=7;
        merge(array1,array2);
        for (int i = 0; i < array1.length; i++) {
            System.out.println(array1[i]);
        }

    }

    /**
     * 根据输入的日期，计算是这一年的第几天。
     * 保证年份为4位数且日期合法。
      * @param args
     */
    public static void main2(String[] args) {
        Scanner in = new Scanner(System.in);
        int[] array = new int [] {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; //每个月的天数，非闰年
        while (in.hasNextInt()) {
            //得到日期
            int year = in.nextInt();
            int  month = in.nextInt();
            int day = in.nextInt();
           // int tmp=month;

            //得到当前月份之前的天数
            int size=0;//记录月份天数
            for (int i = 0; i <month-1 ; i++) {//0到11月。全部减一，与数组下标对应,如8月，则从1加到7，即0加到6（下标）
                size+=array[i];//获取当前月份之前的天数
            }
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0){//闰年情况，在大于二月时加一
                if(month>2){//大于二月才加加，否则不变
                    size++;
                }
            }
            System.out.println(size+day);//天数为size加上当前月份天数
        }

    }
    /**
     * 统计字符串中的单词个数，这里的单词指的是连续的不是空格的字符。
     */
    public static int countSegments(String s) {
        int num=0;
        if(s.length()==0){//这是s为"".即没有单词的情况,怕s.length-1为-1,越界
            return 0;
        }
        for (int i = 0; i <s.length()-1 ; i++) {//前面有字符,后面为空,则是1 个单词,但是的长度减一,因为会越界
            char ch1=s.charAt(i);
            char ch2=s.charAt(i+1);
            if (ch1!=' '&&ch2==' '){
                num++;
            }
        }
        if(s.charAt(s.length()-1)!=' '){//最后结尾处处理因为当" name"时没有记录,所以得++,当"  "时不用
            num++;
        }
        return num;
    }

    /**
     * 给你一个字符串 s ，将该字符串中的大写字母转换成相同的小写字母，返回新的字符串。
     * @param //args
     */
    public static String toLowerCase(String s) {

        String str="";
        for(int i=0;i<s.length();i++){
            char ch=s.charAt(i);
            if(ch<=90&&ch>=65){
                ch+=32;
            }
            str+=ch;
        }
        return str;
    }

    /**
     * 数组nums包含从0到n的所有整数，但其中缺了一个。请编写代码找出那个缺失的整数。你有办法在O(n)时间内完成吗？
     * 0 3 1 缺2,数据是从0开始的,所以下标不要变
     */
        public static int missingNumber(int[] nums) {
            int [] tmp=new int[nums.length+1];
            for(int i=0;i<nums.length;i++ ){
                tmp[nums[i]]=1;
            }
            for(int i=0;i<tmp.length;i++){
                if(tmp[i]==0){
                    return i;
                }
            }
            return 0;

        }

    /**
     * 给定一个整数数组 nums，将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
     * @param //args
     *///[1,2,3,4,5,6,7], k = 3  得 [5,6,7,1,2,3,4]
    public static void rotate(int[] nums, int k) {
        if(nums.length==0){//传入数组为null的情况
            return;
        }
        k%=nums.length;//k有可能超出长度,如长度7,旋转8次,会时i越界
        Stack<Integer> stack=new Stack<>();
        for (int i =nums.length-k-1; i >=0 ; i--) {//先放入4,3,2,1
            stack.push(nums[i]);
        }
        for (int i = nums.length-1; i >nums.length-1-k ; i--) {//再放入7,6,5
            stack.push(nums[i]);
        }
        for (int i = 0; i <nums.length ; i++) {//最后按顺序拿出即可,stack先进后出
            nums[i]=stack.pop();
        }

    }

    /**
     * 给你一个数组 nums 和一个值 val，你需要 原地 移除所有数值等于 val 的元素，并返回移除后数组的新长度。
     *
     * 不要使用额外的数组空间，你必须仅使用 O(1) 额外空间并 原地 修改输入数组。
     *
     * 来源：力扣（LeetCode）
     * 链接：https://leetcode.cn/problems/remove-element
     * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
     * @param //args
     */
    public static int removeElement(int[] nums, int val) {
        int num=0;
        int left=0;
        int right=nums.length-1;
        while(left<right){
            while(nums[left]!=val){
                left++;
            }
            while(nums[right]==val&&left<right){
                right--;
            }
            if(left==right&&num==0){
                return 0;
            }
            int tmp=nums[left];
            nums[left]=nums[right];
            nums[right]=tmp;
            num++;
        }
        if (left==right&&num==0){
            return 0;
        }
        return nums.length-num;
    }
    public static void main(String[] args) {
        int[] arran= {1};
        int k=1;
       int len=removeElement(arran,k);
        for (int i = 0; i <len ; i++) {
            System.out.println(arran[i]);
        }

    }

}